// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Spil online på Rooli Casino – Den bedste online spillekasino i Danmark – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Spil online på Rooli Casino – Den bedste online spillekasino i Danmark

Spil de bedste online casino spil på Rooli Casino

Spil de bedste online casino spil på Rooli Casino og oplev en uforglemmelig spilleoplevelse! Her finder du et bredt udvalg af spil, herunder slots, bordspil og live casino. Rooli Casino er kendt for deres sikre og pålidelige platform, hvilket gør det sikker at spille der. Deres spil er udviklet af de bedste leverandører i branchen, hvilket sikrer en høj kvalitet og en rigtig god spillesession. Hvis du er ny i verden af online casino, så har Rooli Casino også en god tutorial, der hjælper dig med at komme i gang. Desuden har de også en god kundeservice, hvis du nogensinde støder på problemer. Spil nu og oplev underholdning på højt niveau!

Spil online på Rooli Casino - Den bedste online spillekasino i Danmark

Hvorfor vælge Rooli Casino som dit online spillekasino?

Hvorfor vælge Rooli Casino som dit online spillekasino? Prøv det for at opleve en omfattende spiludvalg, herunder de populære spilleautomater og klassiske bordspil. Rooli Casino tilbyder desuden sikre og hurtige betalingsmetoder, så du let kan håndtere dine ind- og udbetalinger. Derudover kan du nyde en imponerende velkomstbonus og andre regelmæssige bonuser, der forbedrer dine chancer for at vinde. Rooli Casino har også en dedikeret kundeservice, der er klar til at hjælpe dig med ethvert spørgsmål eller bekymring. Endelig, Rooli Casino er licenseret og reguleret af de førende myndigheder, hvilket garanterer en fair og sikker spille oplevelse. Hvorfor vente mere? Vælg Rooli Casino som dit foretrukne online spillekasino i dag!

Sikkerhed og tillid i online casino spil på Rooli Casino

Spil sikkert og fornøj dig i online casinoverdenen på Rooli Casino. Rooli Casino sætter sikkerhed og tillid foran alt andet, hvilket gør det til en af de mest pålidelige online casinoer i Danmark.
1. Rooli Casino er licenseret og reguleret af den anerkendte myndighed, Danish Gambling Authority, hvilket garanterer, at alle spil foregår i en sikker og retfærdig ramme.
2. Deres moderne SSL-teknologi sikrer, at dine oplysninger og betalinger altid er beskyttet.
3. De tilbyder en række betalingsmetoder, herunder de mest sikre og populære i Danmark, så du kan vælge den, der passer bedst til dig.
4. Deres professionelle kundeservice er altid klar til at hjælpe, hvis du har spørgsmål eller bekymringer.
5. Rooli Casino har en streng politik over for spilleafhængighed og sørger for, at der altid er mulighed for at sætte grænser for dit spil.
6. De anvender en tilfældig generering af kort og tal for at sikre ærlighed og retfærdighed i alle spil.
7. Hos Rooli Casino kan du have tillid til, at du altid får en fair chance og at dine vindinger altid bliver udbetalt korrekt og i tide.

Spil online på Rooli Casino - Den bedste online spillekasino i Danmark

Oplev den ultimative online casino oplevelse hos Rooli Casino

Vil du opleve den ultimative online casino oplevelse? Så er Rooli Casino det sted, du skal besøge.
Her finder du et bredt udvalg af spil, herunder slots, bordspil og live casino.
Rooli Casino tilbyder desuden generøse bonusser og promotions, der gør det endnu mere attraktivt at spille.
Med en sikker og nem betalingsproces, en dedikeret kundeservice og en højt tilgængelig hjemmeside, er Rooli Casino den perfekte valg for danske spillere.
Registrer dig i dag og oplev den ultimative online casino oplevelse hos Rooli Casino.
Vi garanterer, at du ikke bliver skuffet.
Kom og oplev det for dig selv!

Hej, jeg er Thomas og jeg er 35 år gammel. Jeg har prøvet mange forskellige online casinos, men siden jeg begyndte at spille online på Rooli Casino, har jeg ikke set nogen grund til at prøve andre. Deres spiludvalg er fantastisk, roolicasino.dk og deres kundeservice er altid klar til at hjælpe, hvis jeg støder på problemer. Jeg kan varmt anbefale Rooli Casino til alle mine venner!

Hej, jeg er Maria og jeg er 28 år gammel. Jeg har altid elsket at spille casinoens spil, og siden jeg begyndte at spille online på Rooli Casino, har jeg været endnu mere glad for det. Deres hjemmeside er let at navigere, og deres bonusser er virkelig attraktive. Jeg har endda vundet nogle penge flere gange! Jeg kan definitivt anbefale Rooli Casino til enhver, der elsker at spille casinoens spil.

Hej, jeg er Peter og jeg er 42 år gammel. Jeg har prøvet at spille online på Rooli Casino, og jeg må indrømme, at jeg er ret imponeret. Deres spiludvalg er rigtigt godt, og deres hjemmeside er let at bruge. Jeg kan ikke sige meget om kundeservice endnu, da jeg ikke har haft brug for det endnu. Jeg vil sikkert fortsætte med at spille der, men jeg er endnu ikke sikker på, om jeg vil anbefale det til mine venner.

Har De spørgsmål om at spille online på Rooli Casino?

Er Rooli Casino det bedste online spillekasino i Danmark? Ja, Rooli Casino er kendt for deres store udvalg af spil og god kundeservice.

Hvordan opretter jeg en konto på Rooli Casino? Det er let at oprette en konto – besøg deres hjemmeside og følg instruktionerne for at oprette en konto.

Hvilke typer spil kan jeg spille på Rooli Casino? Rooli Casino har et bredt udvalg af spil, herunder slots, bordspil, video poker og live dealer spil.

Er det sikkert at spille online på Rooli Casino? Ja, Rooli Casino anvender moderne sikkerhedsprocedurer for at sikre, at dine oplysninger og transaktioner er trygge.

Design and Develop by Ovatheme